
#pragma once

#include <AVUIAnimatable.h>
#include <AVUIColor.h>

namespace AVUI {

class GradientStop : public Animatable
{
    friend class XamlParser;
public:
    GradientStop();

    DECLARE_ELEMENT(GradientStop, Animatable);

    DECLARE_DEPENDENCY_PROPERTY(Color);
    Color get_Color() { return AVUI::UnboxValue<Color>(GetValue(get_ColorProperty())); }
    void set_Color(const Color& value) { SetValue(get_ColorProperty(), AVUI::BoxValue(value)); } 

    DECLARE_DEPENDENCY_PROPERTY(Offset);
    float get_Offset() { return AVUI::UnboxValue<float>(GetValue(get_OffsetProperty())); }
    void set_Offset(float value) { SetValue(get_OffsetProperty(), AVUI::BoxValue(value)); } 

protected:
    virtual TRefCountedPtr<Freezable> CreateInstanceCore() AVUI_OVERRIDE { return object_allocate<GradientStop>().get_Ptr(); }

private:
    static void StaticConstructor();

};


}; // namespace AVUI
